﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CamadaDados;

namespace CasaisEmEdificacao.Gerenciador.enquete
{
    public partial class FormEnquete : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                CarregarDados();
            }
        }

        public void CarregarDados()
        {
            var banco = new CamadaDados.DB_CASAIS();

            var result = banco.tb_enquete.Where(q => q.CO_SITUACAO == 1).ToList().OrderByDescending(q => q.DT_INCLUSAO);
            listPergunta.DataSource = result;
            listPergunta.DataBind();

            
        }

        protected void listPergunta_ItemDataBound(object sender, ListViewItemEventArgs e)
        {
            if (e.Item.DataItem != null)
            {
                ListView ctrlRptResposta = e.Item.FindControl("listResposta") as ListView;
                var label = (HiddenField)e.Item.FindControl("codPergunta");
                var intLabel = Convert.ToInt32(label.Value);
                var banco = new DB_CASAIS();
                var result = banco.tb_resposta_enquete.Where(q => q.CO_ENQUETE == intLabel).ToList();
                ctrlRptResposta.DataSource = result;
                ctrlRptResposta.DataBind();
            }
        }

        protected void listPergunta_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            var strAcao = e.CommandName;
            var strCodEnquete = e.CommandArgument;
            int intCodEnquete = Convert.ToInt32(strCodEnquete);
            switch (strAcao)
            {
                case "Editar":
                    var banco2 = new DB_CASAIS();
                    var objEnquete = banco2.tb_enquete.Where(q => q.CO_ENQUETE == intCodEnquete).FirstOrDefault();
                    hidCodEnquete.Value = objEnquete.CO_ENQUETE.ToString();
                    txtPergunta.Text = objEnquete.DS_ENQUETE;
                    btnAlterarEnquete.Visible = true;
                    btnIncluirEnquete.Visible = false;
                    ModalEnquete.Show();
                    break;

                case "Pergunta":
                    txtResposta.Text = "";
                    hidCodEnquete.Value = strCodEnquete.ToString();
                    ModalPergunta.Show();
                    break;

                case "Excluir":
                    ExcluirEnquete(Convert.ToInt32(strCodEnquete));
                    break;                
            }

            
        }

        protected void listResposta_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            var strCodResposta = e.CommandArgument;
            ExcluirResposta(Convert.ToInt32(strCodResposta));
        }

        private void ExcluirResposta(int intCodResposta)
        {
            var banco = new DB_CASAIS();
            var objResposta = banco.tb_resposta_enquete.Where(q => q.CO_RESPOSTA_ENQUETE == intCodResposta).FirstOrDefault();
            banco.DeleteObject(objResposta);
            banco.SaveChanges();
            CarregarDados();
        }

        private void ExcluirEnquete(int intCodEnquete) 
        {
            var banco = new DB_CASAIS();

            var listResp = banco.tb_resposta_enquete.Where(q => q.CO_ENQUETE == intCodEnquete).ToList();

            if (listResp.Count > 0)
            {
                foreach (var item in listResp)
                {
                    banco.DeleteObject(item);
                    banco.SaveChanges();
                }
            }

            var banco2 = new DB_CASAIS();

            var objEnquete = banco2.tb_enquete.Where(q => q.CO_ENQUETE == intCodEnquete).FirstOrDefault();
            banco2.DeleteObject(objEnquete);
            banco2.SaveChanges();

            CarregarDados();

        }

        protected void btnAlterarEnquete_Click(object sender, EventArgs e)
        {
            int intCodEnquete = Convert.ToInt32(hidCodEnquete.Value);
            var banco2 = new DB_CASAIS();
            var objEnquete = banco2.tb_enquete.Where(q => q.CO_ENQUETE == intCodEnquete).FirstOrDefault();
            objEnquete.DS_ENQUETE = txtPergunta.Text;
            banco2.SaveChanges();
            CarregarDados();
        }

        protected void btnIncluirEnquete_Click(object sender, EventArgs e)
        {
            var banco = new DB_CASAIS();

            var objEnquete = new tb_enquete();

            objEnquete.DS_ENQUETE = txtPergunta.Text;
            objEnquete.DT_INCLUSAO = DateTime.Now;
            objEnquete.CO_SITUACAO = 1;

            banco.AddTotb_enquete(objEnquete);
            banco.SaveChanges();

            Response.Redirect("/Gerenciador/enquete/FormEnquete.aspx");

        }

        protected void linkNovaEnquete_Click(object sender, EventArgs e)
        {
            btnIncluirEnquete.Visible = true;
            btnAlterarEnquete.Visible = false;
            ModalEnquete.Show();
        }

        protected void btnIncluirResposta_Click(object sender, EventArgs e)
        {
            var banco = new DB_CASAIS();

            var objResposta = new tb_resposta_enquete();

            objResposta.DS_RESPOSTA = txtResposta.Text;
            objResposta.CO_ENQUETE = Convert.ToInt32(hidCodEnquete.Value);
            objResposta.NR_HITS = 0;
            banco.AddTotb_resposta_enquete(objResposta);
            banco.SaveChanges();

            CarregarDados();
        }
        
    }
}